home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / whichdb.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  2KB  |  117 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''Guess which db package to use to open a db file.'''
  5. import os
  6. import struct
  7. import sys
  8.  
  9. try:
  10.     import dbm
  11.     _dbmerror = dbm.error
  12. except ImportError:
  13.     dbm = None
  14.     _dbmerror = IOError
  15.  
  16.  
  17. def whichdb(filename):
  18.     '''Guess which db package to use to open a db file.
  19.  
  20.     Return values:
  21.  
  22.     - None if the database file can\'t be read;
  23.     - empty string if the file can be read but can\'t be recognized
  24.     - the module name (e.g. "dbm" or "gdbm") if recognized.
  25.  
  26.     Importing the given module may still fail, and opening the
  27.     database using that module may still fail.
  28.     '''
  29.     
  30.     try:
  31.         f = open(filename + os.extsep + 'pag', 'rb')
  32.         f.close()
  33.         if not dbm.library == 'GNU gdbm' and sys.platform == 'os2emx':
  34.             f = open(filename + os.extsep + 'dir', 'rb')
  35.             f.close()
  36.         
  37.         return 'dbm'
  38.     except IOError:
  39.         
  40.         try:
  41.             f = open(filename + os.extsep + 'db', 'rb')
  42.             f.close()
  43.             if dbm is not None:
  44.                 d = dbm.open(filename)
  45.                 d.close()
  46.                 return 'dbm'
  47.         except (IOError, _dbmerror):
  48.             pass
  49.         except:
  50.             None<EXCEPTION MATCH>(IOError, _dbmerror)
  51.         
  52.  
  53.         None<EXCEPTION MATCH>(IOError, _dbmerror)
  54.  
  55.     
  56.     try:
  57.         os.stat(filename + os.extsep + 'dat')
  58.         size = os.stat(filename + os.extsep + 'dir').st_size
  59.         if size == 0:
  60.             return 'dumbdbm'
  61.         
  62.         f = open(filename + os.extsep + 'dir', 'rb')
  63.         
  64.         try:
  65.             if f.read(1) in [
  66.                 "'",
  67.                 '"']:
  68.                 return 'dumbdbm'
  69.         finally:
  70.             f.close()
  71.  
  72.     except (OSError, IOError):
  73.         pass
  74.  
  75.     
  76.     try:
  77.         f = open(filename, 'rb')
  78.     except IOError:
  79.         return None
  80.  
  81.     s16 = f.read(16)
  82.     f.close()
  83.     s = s16[0:4]
  84.     if len(s) != 4:
  85.         return ''
  86.     
  87.     
  88.     try:
  89.         (magic,) = struct.unpack('=l', s)
  90.     except struct.error:
  91.         return ''
  92.  
  93.     if magic == 324508366:
  94.         return 'gdbm'
  95.     
  96.     if magic in (398689, 1628767744):
  97.         return 'bsddb185'
  98.     
  99.     
  100.     try:
  101.         (magic,) = struct.unpack('=l', s16[-4:])
  102.     except struct.error:
  103.         return ''
  104.  
  105.     if magic in (398689, 1628767744):
  106.         return 'dbhash'
  107.     
  108.     return ''
  109.  
  110. if __name__ == '__main__':
  111.     for filename in sys.argv[1:]:
  112.         if not whichdb(filename):
  113.             pass
  114.         print 'UNKNOWN', filename
  115.     
  116.  
  117.